/**
 * 模块化封装mongoose
 */
// db01
const mongoose = require('mongoose')
const UserModel = require('./module/user')
const OrderModel = require('./module/order')
const Order_itemModel = require('./module/order_item')
// db02
const ArticleModel = require('./module/article')
const Article_cateModel = require('./module/article_cate')
const AutherModel = require('./module/auther')


// 查询
// UserModel.find({}, (err, doc)=> {
//   if(err) return console.log(err)
//   console.log(doc)
// })

// 增加
// const user = new UserModel({
//   username: 'zhangsan4',
//   password: 'abcabc',
// })
// UserModel.save((err) => {
//   if(err) return console.log(err)
//   console.log('增加数据成功')
// })

// 更新
// UserModel.updateOne({"_id":"62456c7b4f3233650c6752f6"}, {"username":"张三"}, (err, doc) => {
//   if(err) return console.log(err)
//   console.log(doc)
// })

// 删除
// UserModel.deleteOne({"_id":"6246784b84f795a5b6fa3c5f"}, (err, doc) => {
//   if(err) return console.log(err)
//   console.log(doc)
// })


// 聚合管道表关联查询 订单找商品
// OrderModel.aggregate([
//   {
//     $lookup:
//       {
//         from: "order_item",
//         localField: "order_id",
//         foreignField: "order_id",
//         as: "items"
//       } 
//   },{
//     $match:{"all_price":{$gte:90}}
//   }
// ],(err, docs) => {
//   if(err) return console.log(err)
//   console.log(JSON.stringify(docs))
// })


// 通过商品找订单信息
// 6246b34edcd9bdf357e47ff1   mongoose.Types.ObjectId()转换id
// Order_itemModel.aggregate([
//   {
//     $lookup:
//       {
//         from: "order",
//         localField: "order_id",
//         foreignField: "order_id",
//         as: "order_info"
//       } 
//   },{
//     $match:{"_id": mongoose.Types.ObjectId("6246b34edcd9bdf357e47ff1")}
//   }
// ], (err, docs) => {
//   if(err) return console.log(err)
//   console.log(JSON.stringify(docs))
// })

// 多表查询
ArticleModel.aggregate([
  {
    $lookup:
      {
        from: "article_cate",
        localField: "art_cate",
        foreignField: "c_id",
        as: "cate"
      }
  },{
    $lookup:
    {
      from: "auther",
      localField: "auther_id",
      foreignField: "a_id",
      as: "auther"
    }
  }
],(err, docs) => {
  if(err) return console.log(err)
  console.log(JSON.stringify(docs))
})